<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="box">艾卡西亚暴雨</div>
    <script>
        // 1.键和键值相同时 可以省略
        // let name = '卡莎'
        // let obj = {
        //     name,
        //     age: 22
        // }
        // console.log(obj)

        // 2.对象内方法写法更新
        // let obj = {
        //     name: '卡莎',
        //     fn() {
        //         console.log('艾卡西亚暴雨')
        //     }
        // }
        // obj.fn()

        // 3.对象键名的更新
        // let myname = '卡莎'
        // let myage = 'age'
        // let myskill = {}
        // let el = document.querySelector('.box')

        // let obj = {
        //     myname,
        //     [myage]: 20,
        //     [myskill]: '虚空·索敌',
        //     [el]: 'red'
        // }
        // console.log(obj)

        // el.style.color = obj[el]

        // 4.判断对象是否相同
        // let obj1 = {
        //     name: "卡莎"
        // }
        // let obj2 = {
        //     name: "卡莎"
        // }
        // console.log(Object.is(obj1, obj2))
        // console.log(NaN===NaN)
        // console.log(Object.is(NaN, NaN))

        // 5.合并两个或多个对象，相同键名会覆盖，是浅拷贝
        // let obj1 = {
        //     name: '卡莎',
        //     skill: '艾卡西亚暴雨',
        //     place: 'ADC'
        // }
        // let obj2 = {
        //     name1: '莎米拉',
        //     skill2: '炼狱扳机',
        //     place: 'ADC'
        // }
        // var res = Object.assign(obj1, obj2)
        // console.log(res)
        // obj1.place = '上单'
        // console.log(obj1,obj2)
        // console.log(res)
        // 展开运算符也是浅拷贝
        // let arr = [1, 2, 3, ['芜湖', '起飞']]
        // // 内层数组其实只存了地址在外层数组内，展开运算只展开最外层
        // let arr2 = [...arr]
        // console.log(arr2)
        // arr[0] = 3
        // arr[3][0] = '起飞'
        // console.log('arr', arr)
        // console.log('arr2', arr2)

        // 6.判断某个属性是否是对象自身属性
        // ES6: Object.hasOwn
        // ES5: Object.hasOwnProperty
        // let obj = {
        //     name: '卡莎',
        //     age: 20
        // }
        // let res = Object.hasOwn(obj, 'name')
        // let res1 = obj.hasOwnProperty('age')
        // console.log(res, res1)

        // 7.查找对象所有键名和键值
        // 键名：Object.keys(obj)
        // 键值：Object.values(obj)
        // let obj = {
        //     name: '卡莎',
        //     age: 20
        // }
        // let key = Object.keys(obj)
        // let value = Object.values(obj)
        // console.log(key, value)

        // 8.Object.seal可以把对象变为不可配置对象(不可删除和添加属性)
        // let obj = {
        //     name: '卡莎',
        //     age: 20
        // }
        // // Object.seal(obj)
        // Object.freeze(obj)
        // delete obj.age
        // obj.skill = "艾卡西亚暴雨"
        // console.log(obj)
        // console.log(obj.skill)




    </script>
</body>

</html>